// Copyright 2024 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

//go:build go1.24

package http2

// Phillip - I think our version of HTTP is of Go1.23 and http2 is Go1.24, so these tests are relying on new http features
// we don't have. Disabling for now.

//import (
//	"testing"
//	"time"
//
//	"github.com/zmap/zgrab2/lib/http"
//)
//
//func TestConfigServerSettings(t *testing.T) {
//	config := &http.HTTP2Config{
//		MaxConcurrentStreams:          1,
//		MaxDecoderHeaderTableSize:     1<<20 + 2,
//		MaxEncoderHeaderTableSize:     1<<20 + 3,
//		MaxReadFrameSize:              1<<20 + 4,
//		MaxReceiveBufferPerConnection: 64<<10 + 5,
//		MaxReceiveBufferPerStream:     64<<10 + 6,
//	}
//	const maxHeaderBytes = 4096 + 7
//	st := newServerTester(t, nil, func(s *http.Server) {
//		s.MaxHeaderBytes = maxHeaderBytes
//		s.HTTP2 = config
//	})
//	st.writePreface()
//	st.writeSettings()
//	st.wantSettings(map[SettingID]uint32{
//		SettingMaxConcurrentStreams: uint32(config.MaxConcurrentStreams),
//		SettingHeaderTableSize:      uint32(config.MaxDecoderHeaderTableSize),
//		SettingInitialWindowSize:    uint32(config.MaxReceiveBufferPerStream),
//		SettingMaxFrameSize:         uint32(config.MaxReadFrameSize),
//		SettingMaxHeaderListSize:    maxHeaderBytes + (32 * 10),
//	})
//}
//
//func TestConfigTransportSettings(t *testing.T) {
//	config := &http.HTTP2Config{
//		MaxConcurrentStreams:          1, // ignored by Transport
//		MaxDecoderHeaderTableSize:     1<<20 + 2,
//		MaxEncoderHeaderTableSize:     1<<20 + 3,
//		MaxReadFrameSize:              1<<20 + 4,
//		MaxReceiveBufferPerConnection: 64<<10 + 5,
//		MaxReceiveBufferPerStream:     64<<10 + 6,
//	}
//	const maxHeaderBytes = 4096 + 7
//	tc := newTestClientConn(t, func(tr *http.Transport) {
//		tr.HTTP2 = config
//		tr.MaxResponseHeaderBytes = maxHeaderBytes
//	})
//	tc.wantSettings(map[SettingID]uint32{
//		SettingHeaderTableSize:   uint32(config.MaxDecoderHeaderTableSize),
//		SettingInitialWindowSize: uint32(config.MaxReceiveBufferPerStream),
//		SettingMaxFrameSize:      uint32(config.MaxReadFrameSize),
//		SettingMaxHeaderListSize: maxHeaderBytes + (32 * 10),
//	})
//	tc.wantWindowUpdate(0, uint32(config.MaxReceiveBufferPerConnection))
//}
//
//func TestConfigPingTimeoutServer(t *testing.T) {
//	st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) {
//	}, func(s *Server) {
//		s.ReadIdleTimeout = 2 * time.Second
//		s.PingTimeout = 3 * time.Second
//	})
//	st.greet()
//
//	st.advance(2 * time.Second)
//	_ = readFrame[*PingFrame](t, st)
//	st.advance(3 * time.Second)
//	st.wantClosed()
//}
//
//func TestConfigPingTimeoutTransport(t *testing.T) {
//	tc := newTestClientConn(t, func(tr *Transport) {
//		tr.ReadIdleTimeout = 2 * time.Second
//		tr.PingTimeout = 3 * time.Second
//	})
//	tc.greet()
//
//	req, _ := http.NewRequest("GET", "https://dummy.tld/", nil)
//	rt := tc.roundTrip(req)
//	tc.wantFrameType(FrameHeaders)
//
//	tc.advance(2 * time.Second)
//	tc.wantFrameType(FramePing)
//	tc.advance(3 * time.Second)
//	err := rt.err()
//	if err == nil {
//		t.Fatalf("expected connection to close")
//	}
//}
